HDS is a simple but very fast database system. In an HDS database you can store and retrieve any information you like. It is a single user database which delivers all needed low level functions and as well some pretty high level functions to form a powerful tool for the organisation of your information.
Emphasis is laid on an easy and fast access of information on a record by record basis. Usage may span from a quite simple save file where you store some items for the next session up to a fully fledged database with relations and processing directives.
HDS is not a database in the classical sense. It is mainly focused on the application developer who wants to store application defined data (e.g. initialisation, save files) in a structured and efficient way.
When starting a project it may seem sufficient to use a simple sequential file for this purpose but as the development goes on it may be necessary to put some structure on this data and to have the possibility to look at the saved data without having the actual application running. HDS is best used when:
• an application has to store structured data permanently,
• the access to the data in the structures is almost sequential and no complicated
queries are needed,
• the amount of memory needed is not known beforehand and may exceed the main
memory available and
• the usage of a classical database would cause too much overhead or would be too
expensive.
Since HDS implements very fast access methods it can be regarded as some kind of virtual memory mechanism.
WHAT IS AN HDS DATABASE?
An HDS database is organised in branches, records and fields. Branches are ordered lists of records which are ordered lists of fields. Branches always have fathers except of the main branch which has none. The records in a branch are the sons of the father record. This forms a hierarchical structure.
Furthermore records may have an ordered list of data records (a data block) which are meant as a description of the owner record. With this feature it is also possible to use an unlimited amount of fields (i.e. the data records).
Records and branches can be protected against modification and deletion. This protection can be removed.
Records consist of fields where the actual information is stored. These fields are defined in for the user invisible descriptor records; the scope of a field description is a branch, so for each branch (including the data records) there must be a field description. For branches which may occur similarly several times in the database you may create a Generic Description where the field types of that branches are stored (in the DESCRIPTORS branch). To create a new branch you can refer to that Generic Description instead of defining the field types redundantely.
Beside this hierarchical structure the user may impose other relations on the data. In HDS a field type “Pointer” may be defined which reflects an HDS record number. So, instead of relying on the pointers HDS is maintaining automatically the user may implement arbitrary relations between records.
If it is know at creation time of a new branch that all records of this branch will have relations to some other records on top of the hierarchical structure the user may define a pointer field where the record numbers of the targets will be stored. If this is not the case there is an other mechanism available in HDS. Two arbitrary records in the database can be linked dynamically any time although that was not prepared at creation time of the branches (no pointer fields defined). The record numbers of that records are stored at a central place in the database (in the LINKS branch) in some kind of cross table. Accessing this cross table leads to a performance loss; so the usage of this mechanism is only recommended if it is absolutely necessary.
WHAT DO I GET?
HDS comes in quite a lot of pieces. They are:
• Registration Form if like HDS you must register
• the HDS library the object code of the HDS functions you may link to your
application
• the header files you need them for compilation of your application
• exception libraries you need one of them for linkage
• HDSTEST ƒ a small benchmark to see how HDS is running on your machine
• the Monitor debugging tool to look at your database
• HDSLib Hypercard externals for direct usage of HDS from HyperTalk
• HDSClient Hypercard externals for usage of the HDS Server from
HyperTalk
• HDSServer the server used together with HDSClient
• the Documentation ƒ you need some documentation, don't you?